#ifndef VIDEO_RENDERER_FACTORY_H
#define VIDEO_RENDERER_FACTORY_H


#include <mutex>

#include "video_renderer.h"


#define myLog printf

class VideoRendererFactory
{
private:
    static VideoRendererFactory *m_instance;
    static std::mutex m_instanceMutex;

private:
    VideoRendererFactory();
    ~VideoRendererFactory();
    
public:
    VideoRendererFactory(VideoRendererFactory &videoRendererFactory) = delete;
    VideoRendererFactory(VideoRendererFactory &&videoRendererFactory) = delete;
    VideoRendererFactory& operator = (VideoRendererFactory &videoRendererFactory) = delete;
    VideoRendererFactory& operator = (VideoRendererFactory &&videoRendererFactory) = delete;

    static VideoRendererFactory* getInstance();
    static void destroy();
    VideoRenderer* createRenderer(int type);
};

#endif